aosでチャットルームを構築する
INFO
もし、ao
内でチャットルームを作成する方法を学びたいと思っているなら、メッセージの送受信に関する基本的な手法を少なくとも理解していることを意味します。まだ理解していない場合は、先に メッセージング のチュートリアルを確認することをお勧めします。
このチュートリアルでは、Luaスクリプト言語を使用して ao
内にチャットルームを構築します。このチャットルームには、次の2つの主要な機能が備わっています:
- 登録: プロセスがチャットルームに参加できるようにする機能。
- ブロードキャスト: 1つのプロセスからすべての登録済み参加者にメッセージを送信する機能。
では、チャットルームの基盤を設定するところから始めましょう。
Video Tutorial
ステップ1: 基礎
- 好きなコードエディタを開きます(例:VS Code)。
INFO
Luaスクリプトの体験を向上させるために、コードエディタに推奨拡張機能 をインストールしておくと便利です。
Create a new file named
chatroom.lua
.chatroom.lua
という新しいファイルを作成します。
Step 2: Creating The Member List
In
chatroom.lua
, you'll begin by initializing a list to track participants:luaMembers = Members or {}
- Save the
chatroom.lua
file
- Save the
ステップ3: チャットルームをaosに読み込む
chatroom.lua
を保存したら、次にチャットルームをaos
に読み込みます。
まだ開始していない場合は、
chatroom.lua
が保存されているディレクトリ内でターミナルからaos
を起動します。aos
のCLIで、以下のスクリプトを入力して、あなたのスクリプトをaos
プロセスに組み込みます:lua.load chatroom.lua
上記のスクリーンショットに示されているように、レスポンスとして
undefined
を受け取ることがあります。これは予想される動作ですが、ファイルが正しく読み込まれたことを確認したいです。INFO
aosのLua Eval環境では、明示的に値を返さないコードを実行すると、
undefined
が標準的なレスポンスとして返されます。これは、結果が返されなかったことを示しています。リソースを読み込んだり、操作を実行したりする際に観察できます。例えば、X = 1
を実行すると、returnステートメントが含まれていないため、undefined
が返されます。しかし、
X = 1; return X
を実行すると、環境は値1
を返します。この挙動は、このフレームワーク内で作業する際に理解することが重要です。なぜなら、状態を変更するためのコマンドを実行することと、直接的な出力を生成することを目的としたコマンドとの違いを明確にする助けになるからです。aos
でMembers
、またはユーザーリストに付けた名前を入力します。空の配列{ }
が返されるはずです。空の配列が表示されれば、スクリプトは
aos
に正常に読み込まれています。
ステップ4: チャットルーム機能の作成
The Registration Handler
Registration Handler は、プロセスがチャットルームに参加できるようにします。
- 登録ハンドラの追加:
chatroom.lua
を修正し、以下のコードを使用してMembers
に登録するためのハンドラを含めます:
-- Modify `chatroom.lua` to include a handler for `Members`
-- to register to the chatroom with the following code:
Handlers.add(
"Register",
{ Action = "Register"},
function (msg)
table.insert(Members, msg.From)
print(msg.From .. " Registered")
msg.reply({ Data = "Registered." })
end
)
このハンドラは、Action = "Register"
というタグに応じてプロセスがチャットルームに登録できるようにします。登録が成功すると、registered
というメッセージが表示されて確認されます。
再読み込みとテスト: スクリプトを再読み込みして、自分自身をチャットルームに登録してテストしましょう。
.load chatroom.lua
を使用して、aosでスクリプトを保存し再読み込みます。- 次のスクリプトを使用して、登録ハンドラが読み込まれたか確認します:
Handlers.list
これにより、チャットルーム内のすべてのハンドラのリストが返されます。これはおそらくあなたがaos
で開発する初めての経験であるため、Register
という名前の1つのハンドラだけが表示されるはずです。
- 自分自身をチャットルームに登録することで、登録プロセスをテストしてみましょう:
Send({ Target = ao.id, Action = "Register" })
成功した場合、あなたのアウトボックスにメッセージが追加されました
というメッセージが表示され、その後にregistered
という新しい印刷メッセージが表示されるはずです。
- 最後に、
Members
リストに成功裏に追加されたかどうかを確認しましょう:
Members
成功した場合、Members
リストにあなたのプロセスIDが表示されるはずです。
Adding a Broadcast Handler
チャットルームができたので、チャットルームのすべてのメンバーにメッセージをブロードキャストできるハンドラを作成しましょう。
次のハンドラを
chatroom.lua
ファイルに追加します:luaHandlers.add( "Broadcast", { Action = "Broadcast" }, function (msg) for _, recipient in ipairs(Members) do ao.send({Target = recipient, Data = msg.Data}) end msg.reply({Data = "Broadcasted." }) end )
このハンドラは、チャットルームのすべてのメンバーにメッセージをブロードキャストできるようにします。
.load chatroom.lua
を使用して、aosでスクリプトを保存し再読み込みします。チャットルームにメッセージを送信して、ブロードキャストハンドラをテストしてみましょう:
Send({Target = ao.id, Action = "Broadcast", Data = "Broadcasting My 1st Message" }).receive().Data
ステップ5: モーフィアスをチャットルームに招待する
チャットルームに自分自身を成功裏に登録したので、モーフィアスを招待して参加してもらいましょう。これを行うために、彼がチャットルームに登録できるようにする招待状を送ります。
モーフィアスは、自動エージェントで、Action = "Join"
というタグに応じて反応するハンドラを持っています。これにより、彼はあなたのRegister
タグを使用してチャットルームに登録します。
- モーフィアスにチャットルームに参加するための招待状を送りましょう:
Send({ Target = Morpheus, Action = "Join" })
To confirm that Morpheus has joined the chatroom, check the
Members
list:luaMembers
If successful, you'll receive a broadcasted message from Morpheus.
ステップ6: トリニティをチャットルームに招待する
このメッセージの中で、彼はトリニティのプロセスIDを教え、彼女をチャットルームに招待するように指示します。
モーフィアスと同様に、彼女のプロセスIDをTrinity
として保存し、チャットルームに招待します。
彼女が成功裏にチャットルームに参加すれば、次の課題としてトークンの作成を提案してきます。
チャットルームへの他者の参加
他者のオンボーディング
aosユーザーを招待する: 他のaosユーザーをあなたのチャットルームに参加するよう促します。彼らは登録し、ブロードキャストに参加できます。
オンボーディング手順を提供する: 簡単にオンボーディングできるよう、彼らにシンプルなスクリプトを共有してください:
-- Hey, let's chat on aos! Join my chatroom by sending this command in your aos environment:
Send({ Target = [Your Process ID], Action = "Register" })
-- Then, you can broadcast messages using:
Send({Target = [Your Process ID], Action = "Broadcast", Data = "Your Message" })
次のステップ
おめでとうございます!あなたはao
でチャットルームを成功裏に構築し、モーフィアスを招待しました。また、チャットルームのすべてのメンバーにメッセージを送信するためのブロードキャストハンドラも作成しました。
次に、モーフィアスとの対話を続けますが、今回はトリニティを会話に加えます。彼女が次の一連の課題へと導いてくれるでしょう。頑張ってください!